<?php

namespace App\Http\Controllers\admin;
use DB;
use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

class BottomNavController extends Controller
{
    /**
	*	底部导航栏添加页面
	*	/admin/bottomNav/add
    */

    public function getAdd() {

    	// 查询数据
    	$data = self::getCates();
    
    	// 加载模板
    	return view('bottomNav.add',['list' => $data]);
    }

    /**
	*	数据处理
    */
    public static function getCates() {

    	// 查询数据
    		$res = DB::table('nav_bottom')
    			->select(DB::raw("*,concat(path,'-',id) as paths"))
    			->orderBy('paths')->get();

    	// 遍历
    		foreach($res as &$v) {
    			$num = count(explode('-',$v['path']))-1;
    			$v['name'] = str_repeat('|---',$num).$v['name'];

    		}
    	return $res;
    }

    /**
	*	底部导航栏执行添加
	*	/admin/bottomNav/insert
    */
    public function postInsert(Request $request) {
    
    	// 判断父类下是否有子类
    	if($request -> input('pid') == 0) { 

    		// 添加父类
    		$data['pid'] = 0;
    		$data['path'] = '0';
    		$data['name'] = $request->input('name');
    		$data['url'] = $request->input('url');
    	}else {

    		// 添加id=$request->input['pid']的子类
    		$data['name'] = $request->input('name');
    		$data['url'] = $request->input('url');
    		$data['pid'] = $request->input('pid');

    		// 拼接子类path
    		$res = DB::table('nav_bottom')->where('id',$request->input('pid'))->first();
    		$data['path'] = $res['pid'].'-'.$res['id'];
    		
    	}

        //使用laravel内置验证方式验证 表单选项
         $this->validate($request, [
                'name' => 'required',
                'url' => 'required',
                'pid' => 'required'

            ],[
                // 报错信息的设置  不写默认英文
                'name.required'=>'类别名称不能为空',
                'url.required'=>'url链接地址不能为空',
                'pid.required'=>'父类名称不能为空'
                  
            ]);

    	// 执行添加
    	$res = DB::table('nav_bottom') -> insert($data);

    	// 判断是否添加成功
    	if($res) {
    		return redirect('admin/bottomNav/index') -> with('success','添加成功');
    	} else {
    		return back() -> with('error','添加失败');
    	}
    }

    /**
	*	底部导航栏浏览
	*	/admin/bottomNav/index
    */
    public function getIndex() {

    	// // 查询数据
    	$data = self::getCates();

    	// 加载模板,输出分页信息
    	return view('bottomNav.index',['list' => $data]);
    }

    /**
    *   转化父类id
    */
    public static function translate($pid) {

        // 查询数据
        $res = DB::table('nav_bottom') -> select('name') -> where('id',$pid) -> first();
        return isset($res['name']) ? $res['name'] : '顶级父类';
    }

    /**
    *   底部导航栏浏览
    *   /admin/bottomNav/delete
    */
    public function getDelete($id) {

        // 判断父类下是否有子类，如果有则不删除
        $res = DB::table('nav_bottom') -> where('pid',$id) -> count();
        if($res > 0) {
            return back() -> with('error','该父类下有子类，不能删除');
        }else {

            // 执行删除
            $res = DB::table('nav_bottom') -> where('id',$id) -> delete();
            if($res) {
                return redirect('admin/bottomNav/index') -> with('success','删除成功');
            } else {
                return back() -> with('error','删除失败');
            }
        }
    }

    /**
    *   底部导航栏修改页面
    *   /admin/bottomNav/edit
    */
    public function getEdit($id) {

        // 查询要修改的数据
        $data = DB::table('nav_bottom') -> where('id',$id) -> first();

        // 加载模板
        return view('bottomNav.edit',[
            'res' => $data,
            'list' => self::getCates(),
            'id' => $data['pid']
            ]);
    }


    /**
    *   底部导航栏执行修改
    *   /admin/bottomNav/update
    */

    public function postUpdate(Request $request) {

        //使用laravel内置验证方式验证 表单选项
         $this->validate($request, [
                'name' => 'required',
                'url' => 'required'

            ],[
                // 报错信息的设置  不写默认英文
                'name.required'=>'类别名称不能为空',
                'url.required'=>'url链接地址不能为空'
                  
            ]);

        // 执行修改
        $data = $request -> except(['_token']);
        $res = DB::table('nav_bottom') -> where('id',$request->input('id')) -> update($data);

        // 判断
        if($res) {
            return redirect('admin/bottomNav/index') -> with('success','修改成功');
        } else {
            return back() -> with('error','修改失败');
        }

    }

}
